요약
- 목적
- 특정 schema에 속한 컬럼, 함수, 시퀀스, 테이블 스키마 등 다양한 정보 조회
INFORMATION_SCHEMA
활용- 함수:
ROUTINES
- 테이블:
TABLES
- 시퀀스:
SEQUENCES
- 컬럼:
COLUMNS
- 테이블 기준 제약조건:
table_constraints
- 열 기준 제약조건:
key_column_usage
1. 함수 목록
1.1 주요 output
routine_schema
: 데이터 스키마명routine_name
: 루틴 이름routine_type
: 루틴 분류PROCEDURE
: 프로시저 /FUNCTION
: 함수
1.2 활용
-- 함수 및 프로시저 가져오기
select routine_schema, routine_name, routine_type
from INFORMATION_SCHEMA.ROUTINES
where routine_type = 'FUNCTION' -- 함수
where routine_type = 'PROCEDURE' -- 프로시저
2. 테이블 목록
2.1 주요 output
table_schema
: 데이터 스키마명table_name
: 테이블명table_type
: 테이블 타입VIEW
: 뷰 테이블BASE TABLE
: 기본 테이블
2.2 활용
-- 1. 특정 데이터 스키마 내 테이블 목록 가져오기
select table_schema, table_name
from INFORMATION_SCEHMA.TABLES
where table_schema = '스키마명'
-- 2. view 테이블만 가져오기
select table_schema, table_name, table_type
from INFORMATION_SCEHMA.TABLES
where table_type = 'VIEW';
3. 시퀀스 목록
시퀀스란?
- 숫자 시리즈 생성하는 독립적인 객체
- 테이블과 별도로 존재하며, 필요시마다 호출해서 가져옴
SERIAL
,BIGSERIAL
등 컬럼 뒤에서 동작
select *
from INFROMATION_SCHEMA.SEQUENCES;
4. 컬럼 목록
4.1 주요 output
table_schema
: 스키마명table_name
: 스키마 내 테이블 명column_name
: 스키마 내 테이블에 해당하는 컬럼명data_type
: 데이터 타입
4.2 특정 테이블 내 컬럼 목록 확인
table_name
조건문 활용
select *
from INFORMATION_SCHEMA.COLUMNS
where table_name = '테이블명'
4.3 활용
-- 1. 특정 컬럼 존재 여부
select count(*)
from INFORMATION_SCHEMA.COLUMNS
where table_name = '테이블명'
and column_name = '컬럼명';
-- 2. 특정 테이블 내 `amt` 로 끝나는 열 목록 추출
select table_name, column_name
from INFORMATION_SCHEMA.COLUMNS
where table_name = '테이블명'
and column_name like '%amt';
5. 제약조건
PK와 같은 제약조건은
INFORMATION_SCHEMA.table_constraints
등 활용
table_constraints
: 테이블 제약조건 목록(PK, FK, UNIQUE 등)key_column_usage
: 어떤 컬럼이 어떤 제약조건인지- 따라서, 특정 테이블에 어떤 컬럼이 PK 인지 활용하기 위해서 두 테이블
constraint_name
기준 JOIN
5.1 주요 output
table_constraints
: 테이블 기준constraint_schema
: 데이터 스키마명constraint_name
: 제약명constraint_type
: 제약 조건PRIMARY KEY
FOREIGN KEY
UNIQUE
key_column_usage
: 컬럼 기준column_name
: 컬럼명
5.2 활용
-- 특정 테이블에 PK 컬럼 가져오기
select a.constraint_schema,
a.constraint_name,
a.table_name,
b.column_name
from information_schema.table_constraints a
left join information_schema.key_column_usage b
on a.constraint_name = b.constraint_name
where a.constraint_type = 'PRIMARY KEY';
참고사이트